const { body, param } = require('express-validator');
const { validate } = require('../validate');

exports.validateProduct = [
    body('name')
        .notEmpty()
        .withMessage('商品名称不能为空')
        .isLength({ max: 100 })
        .withMessage('商品名称不能超过100个字符'),
    
    body('code')
        .notEmpty()
        .withMessage('商品编码不能为空')
        .isLength({ max: 50 })
        .withMessage('商品编码不能超过50个字符'),
    
    body('category_id')
        .notEmpty()
        .withMessage('商品分类不能为空')
        .isInt()
        .withMessage('商品分类ID必须是整数'),
    
    body('price')
        .notEmpty()
        .withMessage('商品价格不能为空')
        .isFloat({ min: 0 })
        .withMessage('商品价格必须大于等于0'),
    
    body('cost')
        .optional()
        .isFloat({ min: 0 })
        .withMessage('商品成本必须大于等于0'),
    
    body('unit')
        .notEmpty()
        .withMessage('商品单位不能为空')
        .isLength({ max: 20 })
        .withMessage('商品单位不能超过20个字符'),
    
    body('stock')
        .optional()
        .isInt({ min: 0 })
        .withMessage('库存必须是非负整数'),
    
    body('min_stock')
        .optional()
        .isInt({ min: 0 })
        .withMessage('最小库存必须是非负整数'),
    
    body('status')
        .optional()
        .isIn(['active', 'inactive'])
        .withMessage('状态必须是 active 或 inactive'),
    
    body('description')
        .optional()
        .isLength({ max: 500 })
        .withMessage('商品描述不能超过500个字符'),
    
    validate
];

exports.validateProductId = [
    param('id')
        .isInt({ min: 1 })
        .withMessage('商品ID必须是正整数'),
    validate
]; 